import re

# 预编译 pattern结果缓存  compile()方法和re模块的函数使用的是同一个函数
# pattern = re.compile("\d+")  # 正则表达式
# m1 = pattern.match("123123")  # 要匹配的字符串
# m3 = pattern.match("456789")  # 要匹配的字符串
# print(m1.group())
# print(m3.group())

# m2 = re.match("\d+","123123")
# print(m2.group())

# search()从整个字符串中进行查找返回第一个匹配到的数据
# st = "我今年18岁20"
# m1 = re.search("\d+",st)
# print(m1.group())


# findall()从整个字符串中进行查找返回所有匹配到的数据(以列表的形式进行返回)
# li = re.findall("\d","a1b2c3d4")
# print(li)
# li = re.findall("\D+","hello123world")
# li = re.findall("[^\d]+","hello123world")
# print(li)

# finditer()从整个字符串中进行查找返回所有匹配到的数据(以迭代器对象的形式进行返回)
# it = re.finditer("[^\d]+","hello123world")
# # print(it)
# for i in it:  # i是match对象
#     print(i.group())


# sub()替换字符串内容(返回替换之后的字符串)
# 正则表达式(要替换的内容) 替换的新内容 要匹配的字符串 替换次数
# st = re.sub("\d","*","我的年龄是18岁，我的体重是110斤")  # 不写替换参数默认是替换所有
# print(st)
# st = re.sub("\d","*","我的年龄是18岁，我的体重是110斤",2)  # 2是替换次数
# print(st)

# subn()替换字符串内容(返回替换之后的字符串和替换次数，以元组的方式进行返回)
# st = re.subn("\d","*","我的年龄是18岁，我的体重是110斤",2)
# print(st)

# 字符串replace() 指定数据进行替换  sub()功能更加强大
# st = "hello 123 world 456"
# st2 = re.sub("\d","*",st)
# print(st2)

# split()以什么进行分割(返回一个列表格式的数据)
# li = re.split("\d","a1b2c3d4e") # 不写最大分割次数默认全部分割
# print(li)
# li2 = re.split("\d","a1b2c3d4e",2)  # 2是分割次数
# print(li2)
# 字符串split()指定数据进行分割